到目前為止我們大約花了二十多個篇幅來介紹 JavaScript 的基本用法,可能有人會想說講了這麼多,JavaScript 跟畫面到底有什麼關係? 又是怎麼控制畫面的呢?
答案是靠 DOM!
DOM 的全名是 Document Object Model,也就是「文件物件模型」,它以 HTML 檔案中的 document
為起點,將前端的各個 Element,包括 <htmle>
、<div>
、文字內容等解析為 Node (節點) 為一個龐大的樹狀結構,而 JavaScript 就是透過 DOM 來操控網頁中指定的元素,讓我們的網頁「動起來」。
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Sample</title>
</head>
<body>
<h1>Content Start</h1>
<a href="https://google.com">Go to google</a>
</body>
</html>
Node 節點
是構成 HTML 文檔的基本單元,也是樹狀圖中每一個方形,通常分為四種:Document
、Element
、Text
、Element
。
Doment
是指目前所在頁面的整份 HTML 檔,是所有的元素和節點的開頭。Element
,例如範例的 <head>
、<body>
、<h1>
、<a>
等。Element
包裹的文字內容,例如範例中被 <h1>
標籤包起來的 "Content Start"<a>
的 href
、標籤的 id
屬性等等Node Properties
故名思義是指節點中的屬性,在我們獲取到節點後,可以利用 Node.屬性
來獲取該節點的名稱、類型、值等資料。
nodeName | nodeType | nodeValue | |
---|---|---|---|
Document |
#document | 9 | null |
Element |
標籤名稱 | 1 | null |
Text |
#text | 3 | 屬性值 |
Attribute |
屬性名稱 | 2 | 文字內容 |
範例:
document.nodeType; // 9
document.nodeName; // '#document'
針對 HTML 的 element
還有更多屬性可以讓我們獲資訊,利如 tagName
可以獲得標籤名稱、innerHTMl
和 innerText
可以獲得元素節點中的 HTML code 和文字內容... 等等,不過要注意的是這些 properties 只有 Element
類型的節點才有。
話不多說,現在就來看看有哪些常用的 element properties 吧!
以下面 HTMl 結構為例:
<body>
<div><a>Go to google</a></div>
</body>
document.querySelector('div').tagName; // 'DIV'
document.querySelector('div').innerHTML; // '<a>Go to google</a>'
document.querySelector('div').innerText; // 'Go to google'
document.querySelector('div').outerHTML; // '<div><a>Go to google</a></div>'
上一篇:[快速入門前端 58] JavaScript:常見的內建函式 (2) Number 和 String 相關
下一篇:[快速入門前端 60] JavaScript:DOM (2) 如何獲取元素節點
系列文章列表:[快速入門前端] 系列文章索引列表